
//Monitored Events
!foo:{
   $event = 1;
}

!bar:{
   $event = 2;
}

match:{
   $event = -1;
}


//State Declaration
int $state;
int $event;

//Reset
$state = 0;
$event = -1;

//Initialize
$state = 0;
$event = -1;

//Monitoring Body
switch($state) {
case 0 :
switch($event) {
case 1 : $state = 1; break ;
case 2 : $state = 2; break ;
default : $state = -1 ; break ;
}  
break ;
case 1 :
switch($event) {
default : $state = -1 ; break ;
}  
break ;
case 2 :
switch($event) {
default : $state = -1 ; break ;
}  
break ;
default : $state = -1 ;
}
//s2 Condition
$state == 2
//s1 Condition
$state == 1
//s0 Condition
$state == 0
//Fail Condition
$state == -1
//f Condition
$state == 0 || $state == 1 || $state == 2
//match Condition
$state == 1
//b Condition
$state == 0 || $state == 1 || $state == 2
